home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr37 / satsfaxt.zip / CCPUTILS.ZIP / SAVE.H < prev    next >
C/C++ Source or Header  |  1990-01-30  |  14KB  |  316 lines

  1. /*===========================================================================*
  2.  *                     CAS.H                     *
  3.  *---------------------------------------------------------------------------*
  4.  *    Header file that defines the various structures and             *
  5.  *    constants used in implementing the Intel/DCA Communicating         *
  6.  *    Applications Specification C Programming Interface 1.0A.             *
  7.  *                                         *
  8.  * The following source code is intended to assist developers in         *
  9.  * creating applications which support the  DCA/Intel Communicating         *
  10.  * Applications Specification Version 1.0A. It is provided free of charge    *
  11.  * and on an as-is basis. THE IMPLIED WARRENTIES OF MERCHANTABILITY AND      *
  12.  * FITNESS FOR A PARTICULAR PURPOSE ARE SPECIFICALLY EXCLUDED. This source   *
  13.  * code may be modified, enhanced, copied and distributed with applications  *
  14.  * that support CAS on a royalty free basis.                     *
  15.  *===========================================================================*/
  16. #include <dos.h>
  17. #pragma pack(1)             /* All structures MUST be placed
  18.                        on byte boundries */
  19.  
  20. /* Structures needed for MS C int86 & int86x library functions. */
  21. union REGS InRegs, OutRegs;        /* General registers in & out */
  22. struct SREGS SegRegs;            /* Segment registers */
  23.  
  24. #define TRUE        1        /* Logical true */
  25. #define FALSE        0        /* Logical false */
  26.  
  27. typedef unsigned char BYTE;
  28. typedef unsigned short WORD;
  29. typedef unsigned long LONGWORD;
  30.  
  31. typedef struct CAS_Date {
  32.     WORD    Year;            /* Date structure */
  33.     BYTE    Month;
  34.     BYTE    Day;
  35. } CAS_DATE;
  36.  
  37. typedef struct CAS_Time {
  38.     BYTE    Hour;            /* Time structure */
  39.     BYTE    Minute;
  40.     BYTE    Second;
  41. } CAS_TIME;
  42.  
  43. /* EXTERNAL DATA BLOCK */
  44. typedef struct EDBlock {
  45.     BYTE     CASMajorVer;        /* CAS major version number */
  46.     BYTE     CASMinorVer;        /* CAS minor version number */
  47.     char     DefaultDir[68];        /* Path to Resident Manager */
  48.     char     DefaultPhonebook[13];    /* Phone book file name */
  49.     char     DefaultLogo[13];        /* Logo file name */
  50.     char     DefaultSender[32];     /* Name specified during installation */
  51.     char     CSID[21];            /* CCITT identification */
  52.     BYTE     RESERVED[107];        /* Reserved for Intel use */
  53. } EDB;
  54.  
  55. /* SINGLE FILE TRANSFER RECORD */
  56. typedef struct SingleFTR {
  57.     BYTE    TransferType;        /* Type of transfer (file, fax etc) */
  58.     BYTE    TextSize;            /* 0:80colx66lin, 1:132colx88lin */
  59.     WORD    EventTime;            /* Time to send in DOS packed format */
  60.     WORD    EventDate;            /* Date to send in DOS packed format */
  61.     char    DestinationName[32];    /* To: field */
  62.     char    FileName[80];        /* Path name of this file */
  63.     char    Phone[47];            /* Phone # to call */
  64.     char    ApplicationTag[64];     /* Application specific tag field */
  65.     char    RESERVED1;            /* Reserved for Intel use */
  66.     BYTE    SendCover;            /* 1:Send, 0:Don't send cover page */
  67.     char    RESERVED2[23];        /* Reserved for Intel use */
  68.     char    CoverPageText[2880];    /* Alias for cover page text */
  69. } SFTR;
  70.  
  71. /* TASK CONTROL FILE STRUCTURE */
  72. typedef struct EventControlFile {
  73.     BYTE    EventType;            /* Type of event (send, receive etc) */
  74.     BYTE    TransferType;        /* Type of transfer (file, fax etc) */
  75.     int     EventStatus;        /* Status of event */
  76.     WORD    EventTime;            /* Time to send or time received */
  77.     WORD    EventDate;            /* Date to send or date received */
  78.     int     FileCount;            /* Number of files to transfer */
  79.     WORD    FTROffset;            /* Offset of first FTR |in TCF on disk */
  80.     char    Phone[47];            /* [0-9] and [,!PTM*#] have meaning */
  81.     char    ApplicationTag[64];     /* Application specific tag field */
  82.     BYTE    RESERVED1;            /* Reserved for Intel use */
  83.     BYTE    ConnectSeconds;        /* Time length of connection: seconds */
  84.     BYTE    ConnectMinutes;        /* Time length of connection: minutes */
  85.     BYTE    ConnectHours;        /* Time length of connection: hours */
  86.     LONGWORD TotalPages;        /* Total # of pages in all files */
  87.     LONGWORD PagesSent;         /* Number of pages transmitted so far */
  88.     WORD    FilesSent;            /* Number of files transmitted so far */
  89.     BYTE    SendCover;            /* 1:Send/0:don't send cover page */
  90.     WORD    ErrorCount;         /* Total # of tranmission errors */
  91.     BYTE    RESERVED2[78];        /* Reserved for Intel use */
  92.     char    RemoteCSID[21];        /* Remote CCITT identification */
  93.     char    DestinationName[32];    /* To: field */
  94.     char    SenderName[32];        /* From: field */
  95.     char    LogoFilePath[80];        /* Path to logo file that is sent */
  96. } ECF;
  97.  
  98. /* FILE TRANSFER RECORD */
  99. typedef struct FileTransferRecord {
  100.     BYTE    FileType;            /* Type of file (ASCII, PCX, DCX) */
  101.     BYTE    TextSize;            /* 0:80colx66lin, 1:132colx88lin */
  102.     BYTE    FileStatus;         /* Status of file (opened, moved etc) */
  103.     LONGWORD BytesSent;         /* Bytes transmitted so far */
  104.     LONGWORD FileSize;            /* Size of file in bytes */
  105.     WORD    PagesSent;            /* Pages transmitted so far */
  106.     WORD    PageCount;            /* # of pages in this file */
  107.     char    FileName[80];        /* Path name of this file */
  108.     BYTE    AddPageIncrements;        /* Additional 1/8 inch increments */
  109.     BYTE    PageLength;         /* Page length in inches */
  110.     char    RESERVED[31];        /* Reserved for Intel use */
  111. } FTR;
  112.  
  113. /* CURRENT EVENT CONTROL STRUCTURE */
  114. typedef struct CurrentEventControlStruct {
  115.     ECF     ControlFile;        /* Control file of current event */
  116.     FTR     CurrentFileInTransit;    /* The FTR controlling the current file
  117.                        transfer */
  118. } CECS;
  119.  
  120. /* QUEUE STATUS */
  121. typedef struct QStat {
  122.     int     QChanges;            /* # changes since CCAM installed */
  123.     int     QControlFiles;        /* Current # control files in queue */
  124.     int     QReceivedFiles;        /* Current # receive files in queue */
  125. } QSTAT;
  126.  
  127. /* HARDWARE STATUS */
  128. typedef struct HWStat {
  129.     BYTE    TransmissionStatus;     /* bit fields for transmission status */
  130.     int     RESERVED1;            /* reserved field */
  131.     BYTE    RetriesLeft;        /* number of retries left */
  132.     BYTE    RESERVED2;            /* reserved field */
  133.     BYTE    PhoneLineStatus;        /* bit fields for phone line status */
  134.     BYTE    BaudRateStatus;        /* bit fields for baud rate status */
  135.     char    RESERVED3[3];        /* reserved field */
  136.     BYTE    HardwareStatus1;        /* additional status bit fields */
  137.     BYTE    ComIOPorts;         /* bit fields for I/O and COM ports */
  138.     BYTE    HardwareStatus2;        /* additional status bit fields */
  139.     char    RESERVED4;            /* reserved field */
  140.     WORD    ErrorCount;         /* receiving/transmission errors */
  141.     char    RESERVED5[14];        /* reserved field */
  142.     char    RemoteCSID[21];        /* CSID of the remote hardware */
  143.     char    RESERVED6[77];        /* reserved field */
  144. } HWSTAT;
  145.     
  146.  
  147. /* Data file header id values - used in graphic data files (PCX & DCX). */
  148. #define PCXID        0x0A        /* Id byte value for PCX files. */
  149. #define PCXENCODE    1        /* Encoding method for PCX files. */
  150. #define DCXID        987654321    /* Id word value for DCX files. */
  151.  
  152. /* PCX FILE HEADER */
  153. typedef struct PCXFileHeader {
  154.     BYTE    PCXid;            /* Must be A0h ..Whoa! That's not 1 byte!*/
  155.     BYTE    Version;            /* 2 suggested; 2 or more allowed */
  156.     BYTE    EncodingMethod;        /* Must be 1 */
  157.     BYTE    BitsPerPixel;        /* Must be 1 for Fax Mode transer */
  158.     WORD    xMinPos;            /* X position of upper left corner,
  159.                        usually 0 */
  160.     WORD    yMinPos;            /* Y position of upper left corner,
  161.                        usually 0 */
  162.     WORD    xMaxPos;            /* X position of bottom right corner,
  163.                        maximum 1728.  xMaxPos - xMinPos + 1
  164.                        must be a multiple of 8 */
  165.     WORD    yMaxPos;            /* Y position of bottom right corner,
  166.                        2200 recommended maximum. */
  167.     WORD    HResolution;        /* Display card horizontal resolution,
  168.                        ignored in Fax mode.  640
  169.                        recommended */
  170.     WORD    VResolution;        /* Display card vertical resolution,
  171.                        ignored in Fax mode.  200
  172.                        recommended */
  173.     BYTE    Palette[48];        /* Ignored in Fax mode; set to 0 */
  174.     BYTE    Reserved1;            /* Must be 0 */
  175.     BYTE    ColorPlanes;        /* Must be 1 for Fax mode */
  176.     WORD    HorizLineBytes;        /* Horizontal line width in bytes */
  177.     char    Reserved2[60];        /* Should be 0.  (..now, what the #!%@
  178.                        does 'should' mean?) */
  179.     char    *ImageData;
  180. } PCXFILE;
  181.  
  182. /* DCX FILE STRUCTURE */
  183. typedef struct DCXFileStruct {
  184.     LONGWORD DXCid;            /* Always 987,654,321 */
  185.     LONGWORD *PageOffsets;        /* Variable-length array of 4-byte
  186.                        offsets, ending w/a 0 offset value */
  187. } DCXFILE;
  188.  
  189. /* Used to specify direction of search in CASFindFirst & CASFindNext. */
  190. #define SEARCH_FORWARD    0        /* Search forward chronologically */
  191. #define SEARCH_BACKWARD 1        /* Search backward chronologically */
  192.  
  193. /* Needed for calls to the Resident Manager. */
  194. #define CASCALL     0x2F        /* Resident Manager Interrupt vector */
  195. #define MULTIPLEX    0xCB        /* Default Multiplex number */
  196.  
  197. /* CAS call constants */
  198. #define INSTALLEDSTATE    0x00        /* CASGetInstalledState */
  199. #define SUBMITTASK    0x01        /* CASSubmitTask */
  200. #define ABORTCURRENT    0x02        /* CASAbortCurrentEvent */
  201. #define FINDFIRST    0x05        /* CASFindFirst */
  202. #define FINDNEXT    0x06        /* CASFindNext */
  203. #define OPENFILE    0x07        /* CASOpenTaskFile */
  204. #define DELETEFILE    0x08        /* CASDeleteFile */
  205. #define DELETEALL    0x09        /* CASDeleteAllFiles */
  206. #define GETEVENTDATE    0x0A        /* CASGetEventDate */
  207. #define SETEVENTDATE    0x0B        /* CASSetEventDate */
  208. #define GETEVENTTIME    0x0C        /* CASGetEventTime */
  209. #define SETEVENTTIME    0x0D        /* CASSetEventTime */
  210. #define GETEDB        0x0E        /* CASGetExternalData */
  211. #define AUTORCVSTATE    0x0F        /* CASARState */
  212. #define GETEVENTSTATUS    0x10        /* CASGetEventStatus */
  213. #define GETQUEUESTATUS    0x11        /* CASGetQueueStatus */
  214. #define GETHWSTATUS    0x12        /* CASGetHardwareStatus */
  215. #define RUNDIAGNOSTICS    0x13        /* CASRunDiagnostics */
  216. #define MOVEFILE    0x14        /* CASMoveReceivedFile */
  217. #define SUBMITSINGLE    0x15        /* CASSubmitSingleFile */
  218. #define UNINSTALL    0x16        /* CASUnistall */
  219.  
  220. /* EventType constants */
  221. #define SEND        0        /* Immediate send event */
  222. #define RECEIVE     1        /* Immediate receive event */
  223. #define POLLED_SEND    2        /* Polled send event */
  224. #define POLLED_RECEIVE    3        /* Polled receive event */
  225.  
  226. /* TransferType constants */
  227. #define FAX_200     0        /* 200x200 dpi fax mode */
  228. #define FAX_100     1        /* 100x100 dpi fax mode */
  229. #define FILE_TRANSFER    2        /* File transfer mode */
  230.  
  231. /* EventStatus constants */
  232. #define NO_PENDING   -516        /* No pending events */
  233. #define ANY_STATUS     -1        /* Any status (used in CASFindFirst) */
  234. #define COMPLETED    0        /* Event was successfully completed */
  235. #define WAITING     1        /* Waiting to be processed */
  236. #define DIALED        2        /* Number has been dialed */
  237. #define SENDING     3        /* Connection made -- sending */
  238. #define RECEIVING    4        /* Connection made -- receiving */
  239. #define ABORTED     5        /* Event was aborted */
  240. #define NEW_STATUS    6        /* Event has not been viewed before */
  241.  
  242. /* CoverPage constants */
  243. #define NO_COVER    0        /* Do NOT send cover page */
  244. #define COVER        1        /* Send cover page */
  245.  
  246. /* FILE TRANSFER RECORD CONSTANTS */
  247.  
  248. /* FileType constants */
  249. #define ASCII        0        /* ASCII file */
  250. #define PCX        1        /* PCX encoded graphics page */
  251. #define DCX        2        /* PCX encoded graphics document */
  252.  
  253. /* TextSize constants */
  254. #define NORMAL        0        /* 80 columns by 66 lines */
  255. #define SMALL        1        /* 132 columns by 88 lines */
  256.  
  257. /* FileStatus constants */
  258. #define UNTOUCHED    0        /* File has not been modified */
  259. #define OPENED        1        /* File has been opened */
  260. #define MOVED        2        /* File has been moved */
  261. #define DELETED     3        /* File was deleted */
  262. #define NOT_RECEIVED    4        /* File is not yet received */
  263.  
  264. /* CPI FUNCTION CONSTANTS */
  265.  
  266. /* Used to specify the Queue to take action on. Used in various CAS calls. */
  267. #define NO_QUEUE       -1        /* Event number not in any Queue. */
  268. #define TASK_QUEUE    0        /* Take action on Task Queue */
  269. #define TASK_QUEUE    0        /* Take action on Task Queue */
  270. #define RECEIVE_QUEUE    1        /* Take action on Receive Queue */
  271. #define LOG_QUEUE    2        /* Take action on Log Queue */
  272.  
  273. /* Used to specify whether to START or STATUS diagnostics in CASRunDiagnostics. */
  274. #define START        1        /* Start diagnostics running */
  275. #define STATUS        0        /* Report status without waiting */
  276.  
  277. /* Used to specify whether to GET or SET Auto Receive state in CASARState. */
  278. #define GETARS        0        /* Get Autoreceive state */
  279. #define SETARS        1        /* Set Autoreceive state */
  280.  
  281. /* Auto Receive State modes. */
  282. #define AR_OFF        0        /* Hardware is not set to Autoreceive */
  283. #define AR_ON        1        /* Hardware is set to Autoreceive */
  284.  
  285. /* Used to determine if the Resident Manager has been installed in CASGetInstalledState. */
  286. #define NOTiOK        0        /* Not installed, OK to install */
  287. #define NOTiNO        1        /* Not installed, NOT OK to install */
  288. #define INSTALLED    0xFF        /* Resident Manager is installed */
  289.  
  290. /* Return values from CASCPI calls. */
  291. #define SUCCESS     0        /* Call was successfully completed */
  292. #define FAIL        1        /* Call was unsuccessfully completed */
  293. #define RUNNING     2        /* Diagnostics are running */
  294.  
  295. extern int pascal CASGetInstalledState(void);
  296. extern int pascal CASSubmitTask(char *TaskControlFile);
  297. extern int pascal CASAbortCurrentEvent(void);
  298. extern int pascal CASFindFirst(int status, BYTE direction, BYTE queue);
  299. extern int pascal CASFindNext(BYTE queue);
  300. extern int pascal CASOpenFile(int event_hdl, int file_no, BYTE queue);
  301. extern int pascal CASDeleteFile(int event_hdl, int file_no, BYTE queue);
  302. extern int pascal CASDeleteAllFiles(BYTE queue);
  303. extern int pascal CASGetEventDate(int event_hdl, BYTE queue, CAS_DATE *date);
  304. extern int pascal CASSetTaskDate(int event_hdl, CAS_DATE *date);
  305. extern int pascal CASGetEventTime(int event_hdl, int queue, CAS_TIME *time);
  306. extern int pascal CASSetTaskTime(int event_hdl, CAS_TIME *time);
  307. extern int pascal CASGetExternalData(EDB *extern_data);
  308. extern int pascal CASAutoReceiveState(BYTE mode, BYTE *rings);
  309. extern int pascal CASGetCurrentEventStatus(CECS *current_event_info);
  310. extern int pascal CASGetQueueStatus(BYTE Queue, QSTAT *status);
  311. extern int pascal CASGetHardwareStatus(HWSTAT *status); 
  312. extern int pascal CASRunDiagnostics(BYTE mode);
  313. extern int pascal CASMoveReceivedFile(int event_hdl, int file_no, char *filespec);
  314. extern int pascal CASSubmitSingleFile(SFTR *OneFileInfo);
  315. extern int pascal CASUnloadResidentManager(void);
  316.